package com.redepronik.negosysfab.seguridad.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import org.primefaces.context.RequestContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.redepronik.negosys.seguridad.entity.Rol;
import com.redepronik.negosys.seguridad.service.RolService;
import com.redepronik.negosys.seguridad.service.UsuarioService;

@Controller
@Scope("session")
public class RolBean implements Serializable {

	private static final long serialVersionUID = 1L;

	@Autowired
	private RolService rolService;
	@Autowired
	private UsuarioService usuarioService;

	private List<Rol> listaRoles;
	// private List<Usuario> listaUsuarios;
	private Rol rol;
	// private Usuario usuario;
	private FacesMessage msg;

	public RolBean() {
		// usuario = new Usuario();
		rol = new Rol();
		// listaUsuarios = new ArrayList<Usuario>();
		// setRol(new Rol());
	}

	// public List<Usuario> getListaUsuarios() {
	// listaUsuarios = usuarioService.obtener();
	// return listaUsuarios;
	// }
	//
	// public void setListaUsuarios(List<Usuario> listaUsuarios) {
	// this.listaUsuarios = listaUsuarios;
	// }

	public void actualizar(ActionEvent actionEvent) {
		String mensaje = rolService.actualizar(rol);
		mensaje(mensaje, "ACTUALIZÓ");
	}

	public void eliminar(ActionEvent actionEvent) {
		rolService.eliminar(rol.getRolid());
		msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "ELIMINÓ", "Banco: "
				+ rol.getNombre());
		FacesContext.getCurrentInstance().addMessage(null, msg);
	}

	public List<Rol> getListaRoles() {
		if (listaRoles == null) {
			listaRoles = new ArrayList<Rol>();
			listaRoles = rolService.obtener();
		}
		return listaRoles;
	}

	public Rol getRol() {
		return rol;
	}

	// public Usuario getUsuario() {
	// return usuario;
	// }
	//
	// public void setUsuario(Usuario usuario) {
	// this.usuario = usuario;
	// }

	public void insertar(ActionEvent actionEvent) {
		String mensaje = rolService.insertar(rol);
		mensaje(mensaje, "INSERTÓ");
	}

	public void limpiar() {
		rol = new Rol();
	}

	private void mensaje(String mensaje, String titulo) {
		RequestContext context = RequestContext.getCurrentInstance();
		if (mensaje.compareTo("SAVE") == 0) {
			msg = new FacesMessage(FacesMessage.SEVERITY_INFO, titulo,
					"Banco: " + rol.getNombre());
			context.addCallbackParam("error", true);
			limpiar();
		} else {
			msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "ERROR", mensaje);
			context.addCallbackParam("error", false);
		}
		FacesContext.getCurrentInstance().addMessage(null, msg);
	}

	public void setListaRoles(List<Rol> listaRoles) {
		this.listaRoles = listaRoles;
	}

	public void setRol(Rol rol) {
		this.rol = rol;
	}
}
